import numpy as np
import matplotlib.pyplot as plt

# 定义信息熵函数
def entropy(p):
    return -np.sum(p * np.log2(p))

# 生成概率分布 P(y_i)
n = 100  # 概率分布的数量
p = np.linspace(0.01, 0.99, n)  # 生成0.01到0.99的概率分布

# 计算信息熵
entropies = np.array([entropy(np.array([pi, 1-pi])) for pi in p])

# 绘制图像
plt.figure(figsize=(10, 6))
plt.plot(p, entropies, label='Entropy', color='blue')
plt.title('Information Entropy vs. Probability')
plt.xlabel('Probability (p)')
plt.ylabel('Entropy (H)')
plt.grid(True)
plt.legend()
plt.show()